Check inheritance tree consistency #2727
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In order to build contracts out of modules, it must be possible to linearize the inheritance tree.
One way to check that this will always be possible is to ensure that there exists an ordering of the contract that matches the inheritance patterns.
This PR adds a script that verifies such an ordering exist by building a graph of dependency relative orders and verifying that this graph is acyclic.
This script can be run with
npm run test:inheritance
, and is added to the CI workflowNote that, when contracts are modified and recompiled, the old manifest in
artifacts/build-info
must be deleted.